//
//  BVJsonSerializable.swift
//  iUtil
//
//  Created by wendachuan on 19/3/22.
//  Copyright © 2019年 wendachuan. All rights reserved.
//


/// json序列化协议
public protocol JsonSerializable {
    /// 从json中解析对象
    ///
    /// - parameter jsonObject: json对象
    /// - parameter error: 错误信息
    /// - return: 对象或者nil
    static func objectFromJson(jsonObject: Any, error: NSErrorPointer) -> JsonSerializable?
    
    /// 对象转化为json对象
    ///
    /// - parameter error: 错误信息
    /// - return: json对象或者nil
    func toJson(error: NSErrorPointer) -> Any?
}

/// 默认实现
public extension JsonSerializable {
    /// 从json中解析对象
    ///
    /// - parameter jsonObject: json对象
    /// - parameter error: 错误信息
    /// - return: 对象或者nil
    static func objectFromJson(jsonObject: Any, error: NSErrorPointer) -> JsonSerializable? {
        return nil
    }
    
    /// 对象转化为json对象
    ///
    /// - parameter error: 错误信息
    /// - return: json对象或者nil
    func toJson(error: NSErrorPointer) -> Any? {
        return nil
    }
}
